A hypercube has 1 or more dimensions, implemented as a Java subclass of audivolv.Func.
Each dimension ranges -1 to 1 and it is an error to exceed that range.
An audivolv.Func has a run function that can take a hypercube position (1 or more numbers ranging -1 to 1)
as parameters in the flo array, and it can change those numbers to a different position.
In that way, a hypercube is a vector-field.
The first flo is at the first index and it is the time variable, which also ranges -1 to 1,
and time 0 is always "now". Time .01 means to go forward .01 amount in time.
Time 1 is a normal function call. 100 calls of .01 time each should approximately have the same result
as 1 call with .01 time,
and should have approximately the same result as 3 calls of -.2 time with 10 calls of .16 time
because 3*(-.2) + 10*(.16) is 1.
Roundoff error can create differences in those. The other thing that can create differences
is similar to the difference of calculating money intrerest rates per year and per day.
Per day (or continuously) includes interest on the interest.
Similarly, 10 calls of .1 time is affected a little by the previous calls but 1 call of 1 time is not.
For that reason, it is also valid for a .1 time call to predict that inaccuracy and do a little less,
but code that tries to account for that inaccuracy will become less accurate if so.
Maybe each hypercube audivolv.Func should specify it it tries to account for that small inaccuracy,
so other code that wants to be more accurate can know to adjust it a little or not. 

Possibly temporarily, some of those hypercube files do not have a time var.
That may be useful for efficient code, but they should be moved somewhere else
when the func inner-file loading system is more flexible.